1. The Field of the Invention
This invention relates to computer networks and, more particularly, to novel systems and methods for temporarily slaving operating systems of a plurality of processors for configuration purposes or for downloading software, and then later emancipating these slaved devices (e.g. computers, microprocessor-based devices, instruments, etc.) to operate independently, including running software, downloading files, and uploading files over the network.
2. The Background Art
Networking typically involves several microprocessor-based devices (nodes) exchanging data with one another over a transmission medium, a communication link such as, for example, a hard wire, fiberoptic cable, radio frequency transmitter/receiver, or other physical communication mechanism. A link between a node and a network or between routers of a wide area network (WAN) may be wireless. Network cards provide a mechanical and data connection between the communication link (e.g. fiberoptic, wire, or wireless) and the processor of the node or device to be connected to the network. Communication may occur by various protocols (rules), with steps (activities) executed by devices satisfying those protocols.
Networks may be defined at several levels of grouping and communication. For convenience, the terms primary, secondary and tertiary network are used here to indicate the extent and complexity of a network. A primary network is the most fundamental connecting of two nodes in some manner. A local area network (LAN) may be thought of as a primary network. A secondary network is a routed network, one including at least two primary networks connected by a router for forwarding messages between the primary networks. A tertiary network (sometimes called an internetwork) is one including two primary or secondary networks, a router in one being separated by an intermediate network from a router in the other. Thus, as the name network implies, a tertiary network can extend from router to router to router via intervening primary networks virtually forever, within the constraints of the laws of electrophysics and communications protocols.
A server is a computer connected to a network via a network card and programmed to act as a traffic manager and storage device for files of data being transmitted over the network by the various connected nodes. A hard wire interconnected to a group of network cards with attached computers, with one of those computers acting as a server, is a typical network. In other networks, every device may be a server.
Computer networks are capable of facilitating many functions, but not certain other functions. For example, as computer network technology has grown, so has the need to pass information over the networks.
Likewise, a user at each node, typically, must configure the node, from physically connecting hardware and loading an operating system of the processor to loading an application and instructing the application how to store and retrieve data representing information. A high degree of automation of tasks normally done by users is not typically available between devices (nodes) across networks. One command line at a time is typically required to be sent and responded to.
Unfortunately, a user logging a controller computer on to a network cannot automatically download executables to a remote, general-purpose, computer for execution. The remote computer must be logged on and configured by the user just as any other computer.
Similarly, a slaved computer may be logged on to a network, configured, loaded with an application and then enslaved to communicate with a master to receive information from a master for use by an application previously launched on the slave computer. Instructions and responses are typically on a command-by-command basis.
Configuration may be thought of as programming a slave with executable codes, and providing information for establishing connections and protocols, identifying other devices to be addressed, identifying a server and possibly a router, providing the address of the slave to the network server, and so forth. Thus, once configured, a node (e.g. computer or other processor-based device on a network) may send and receive messages. Also, once an application has been launched (loaded and instructed to run), the slave may send and receive information related to the application. However, if a slave is basically a general purpose processor with an operating system and memory, or optionally including a storage device, it must be manually loaded with software and instructed to run by a user before communicating with a master.
What is needed is a system that enables a controller to act as a user or otherwise take control of a processor to instruct it. For example, a processor needs to be controlled long enough to be instructed to download "executables," (files containing a coded instruction capable of being "understood" by an operating system of a processor to result in an operable instruction executable by the processor), and to launch (run) the executables. Slaving an operating system and configuring the host (remote computer) need to be followed by a high degree of independent operation by the remote computer.
A scheme is needed for slaving and configuring, followed by downloading entire executables to a general purpose computer, that is, a target, located remotely from a controller, particularly over a network. For example, a controller may need to automatically perform all tasks normally required of a user seated at a keyboard associated with the target. For example, a user boots up a computer with some operating system, logs on to a network, navigates through a hierarchy of directories, locates and loads an executable file, and runs the "executable." For systems having an input/output (I/O) interface for dealing with humans, great utility may be obtained by providing for a remote computer to replace the user, thus providing automation of many manual tasks associated with setting up a computer, running software, and managing files.
Similarly, for processor-based apparatus having I/O interfaces embedded, without user interfaces as monitors and keyboards, great utility could be obtained by providing for automatic access to the operating system by a remote computer across a network. For example, automatic loading of executables from a remote computer, automatic upgrading, and any similar task accessing the operating system of a microprocessor-based device on a network could make management and upgrading of such devices tractable on a large scale.
Likewise, the need may be for downloading information to the memory of a device by which the device may operate a resident executable. For example, when a single computer connects to several peripheral devices, the single computer typically may control those various devices directly. Also, a controlling computer may simply provide data corresponding to responses, commands, or information needed by an application running on a slaved computer. However a need exists for autonomous devices to be temporarily accessed remotely with data for controlling or supporting resident executables, after which the devices return to their autonomous operating condition. The need, when compared with the conventional term "slaved computer" is for an "emancipated computer" that may be temporarily and remotely enslaved at an operating system level, configured, and emancipated to operate independently over the network. The emancipated computer or other device needs to be able to access files of input information or load itself with an executable, or launch an executable, after which it may report back to a master to be enslaved again, and reconfigured to operate again as an emancipated device.
A system is needed that is transparent to a user for tracking large numbers of such emancipated slave computers. Thus, a system is needed that will facilitate a controller accessing numerous resources (computers), monitoring their capabilities, taking temporary control of any available one, commanding the selected resource to configure itself, load and run software, and pass input and output information properly, and report to the controller when it is again available to be assigned another project. Again, single commands with reporting back for another command are not the intention. What is needed is true emancipation, maximizing the use of the emancipated slave resource, with minimum necessity for control by the controller, while at the same time permitting the controller to communicate with the resource at an operating system level when needed. Thus a general purpose computer may be commanded to completely re-configure itself as needed without human intervention.
Thus maximum utility of all resources may be achieved by simply programming the logical options, defaults, backups for failed options, and the like, in order to keep all resources operating all the time with tasks that each can complete. Thus, regardless of processor, speed, memory, architecture or operating system, each resource needs to be able to be put to work effectively for every minute that it is available, without waiting for a user to monitor, schedule, and program the resource manually. All this capability over network can make possible testing systems having great speed, throughput, and flexibility from an assembly of any number of available resources of virtually any type. Moreover, human intervention may be only required at some minimal degree, yet a human operator could access the controller for information on the system status, results, and the like at any time.